package tp.igl.Controler;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import tp.igl.View.AdresseIpField;
import tp.igl.View.SegmentField;

/**
 * <b>AdresseIpControler est une class utilisé pour controler les champs de type 
 * AdresseIpField.<b>
 * <p>
 * Cette class impliment l'interface EventHandler<ActionEvent> et définie la methode 
 * handle. Elle assure que  l'adresse lu est une adresse IP valide.
 * </p>
 * @see AdresseIP
 * @see #handle
 * @see AdresseIpField
 * @author Redouane
 */
public class AdresseIpControler implements EventHandler<ActionEvent>{

    AdresseIpField adresse;

    /**
     *
     * @param adresse
     */
    public AdresseIpControler(AdresseIpField adresse) {
        this.adresse = adresse;
    }
    
    
    /**
     * Elle est executée a chaque fois q'une evenement de type ActionEvent ce produit.
     * @param t un objet de type ActionEvent qui contient les informations sur la
     * source de l'evenement.
     */
    @Override
        public void handle(ActionEvent t) {
        SegmentField seg=(SegmentField)(t.getSource());
        int val;
        if(seg.getText().length()<=3){
            if(seg.getText().length()==0)
                seg.setText("0");
                    // si la valeur du champ est correct mettre a jour le segment
            val=Integer.parseInt(seg.getText());
            if(val<256 && val>=0){
            (seg.getSegment()).setValeur(val); 
            adresse.fire();
            }
            else 
                seg.setText(new Integer(seg.getSegment().getValeur()).toString());
        }
        else
                    // remplire le champs avec l'ancienne valeur
            seg.setText(new Integer(seg.getSegment().getValeur()).toString());
    }
 
    
}
